using System;
using System.Collections.Generic;
using System.Security.Cryptography;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using DevExpress.XtraGrid;
using Барс;
using Барс.Ядро;
using Барс.Интерфейс;
namespace Аккорд
{
	public partial class ФормаРедактированияМенеджера
	{
		#region Обработчик события ФормаРедактированияМенеджера_Открытие (8d4e64b1-977e-42ee-a822-beb3163ca53a)
		private void ФормаРедактированияМенеджера_Открытие( object Отправитель, АргументыСобытия Аргументы )
		{
            if (!ПеременныеПриложения.ПользовательАдминистратор)
            {
                Сообщение.ПоказатьОшибку("Запрещено изменять реквизиты данного менеджера!");
                Close();
                return;
            }

		    Оператор оператор = Выборка<Оператор>.НайтиОбъектПоРеквизиту("Менеджер", Менеджер);
            if (оператор != null)
            {
                редактор_Логин.Текст = оператор.Пользователь.Логин;
                редактор_Пароль.Текст = оператор.Пользователь.Пароль;
            }
		}
		#endregion
		
		#region Обработчик события кнопка_OK_Нажатие (922c909b-e15b-4c38-88dd-f9f7b40f2874)
		private void кнопка_OK_Нажатие( object Отправитель, АргументыСобытия Аргументы )
		{
            Оператор оператор = null;
            РольПользователя новаяРоль = null;

            if (Менеджер.Состояние != СостояниеХранимогоОбъекта.Новый)
            {
                оператор = Выборка<Оператор>.НайтиОбъектПоРеквизиту("Менеджер", this);
            }

            if (оператор == null)
            {
                оператор = new Оператор();
                оператор.Менеджер = Менеджер;
            }

            bool сохранятьПользователя = false;

            if (оператор.Пользователь == null)
            {
                сохранятьПользователя = true;
                оператор.Пользователь = new Пользователь();
                новаяРоль = new РольПользователя();
                новаяРоль.Роль = Выборка<Роль>.НайтиОбъектПоРеквизиту("Наименование", "Менеджер");
                новаяРоль.Пользователь = оператор.Пользователь;
                оператор.Пользователь.Роли.Добавить(новаяРоль);
            }

            оператор.Пользователь.Логин = редактор_Логин.Текст;
            оператор.Пользователь.Наименование = Менеджер.ПолноеФИО;

            if (оператор.Пользователь.Пароль != редактор_Пароль.Текст)
                оператор.Пользователь.Пароль = редактор_Пароль.Текст;

		    Менеджер.Заблокировать();
            Менеджер.Сохранить();
		    Менеджер.СнятьБлокировку();

            if (сохранятьПользователя)
                оператор.Пользователь.Сохранить();

            if (новаяРоль != null)
            {
                новаяРоль.Заблокировать();
                новаяРоль.Пользователь.Заблокировать();
                новаяРоль.Роль.Заблокировать();

                новаяРоль.Сохранить();

                новаяРоль.Роль.СнятьБлокировку();
                новаяРоль.Пользователь.СнятьБлокировку();
                новаяРоль.СнятьБлокировку();
            }

            оператор.Заблокировать();
            оператор.Сохранить();
            оператор.СнятьБлокировку();
		}
		#endregion
		
	}
}